home *** CD-ROM | disk | FTP | other *** search
/ Adobe Graphics & Publishing SDK 1996 December / Adobe Graphics & Publishing SDK 1996 December.iso / pc / ps40sdk / examples / selection / shape / common / shapescripting.c < prev   
Encoding:
C/C++ Source or Header  |  1996-07-29  |  4.3 KB  |  211 lines

  1. /*
  2.     File: ShapeScripting.c
  3.  
  4.     Copyright 1996, Adobe Systems Incorporated.
  5.     All rights reserved.
  6.  
  7.     C source file for scripting functions for Shape example.
  8. */
  9.  
  10. #include "Shape.h"
  11.  
  12. /*****************************************************************************/
  13.  
  14. /* Checks the parameters against scripting-returned parameters, if any, and
  15.    updates our parameters to match ones given to us by the scripting system. */
  16.  
  17. Boolean ReadScriptParams (GPtr globals)
  18. {
  19.     PIReadDescriptor            token = NULL;
  20.     DescriptorKeyID                key = NULLID;
  21.     DescriptorTypeID            type = NULLID;
  22.     OSType                        x = typeNull;
  23.     DescriptorKeyIDArray        array = { keyShape, keyCreate, NULLID };
  24.     int32                        flags = 0;
  25.     OSErr                        stickyError = noErr;
  26.     Boolean                        returnValue = true;
  27.     
  28.     if (DescriptorAvailable())
  29.     { /* playing back.  Do our thing. */
  30.         token = OpenReader(array);
  31.         if (token)
  32.         {
  33.             while (PIGetKey(token, &key, &type, &flags))
  34.             {
  35.                 switch (key)
  36.                 {
  37.                     case keyShape:
  38.                         PIGetEnum(token, &x);
  39.                         gWhatShape = KeyToEnum(x, typeShape);
  40.                         break;
  41.                     case keyCreate:
  42.                         PIGetEnum(token, &x);
  43.                         gCreate = KeyToEnum(x, typeCreate);
  44.                         break;
  45.                 }
  46.             }
  47.  
  48.             stickyError = CloseReader(&token); // closes & disposes.
  49.                 
  50.             if (stickyError)
  51.             {
  52.                 if (stickyError == errMissingParameter) // missedParamErr == -1715
  53.                     ;
  54.                     /* (descriptorKeyIDArray != NULL)
  55.                        missing parameter somewhere.  Walk IDarray to find which one. */
  56.                 else
  57.                     gResult = stickyError;
  58.             }
  59.         }
  60.         
  61.         returnValue = PlayDialog();
  62.         /* return TRUE if want to show our Dialog */        
  63.     }
  64.     
  65.     return returnValue;
  66. }
  67.         
  68. /*****************************************************************************/
  69.  
  70. /* Writes our parameters to the scripting system. */
  71.  
  72. OSErr WriteScriptParams (GPtr globals)
  73. {
  74.     PIWriteDescriptor            token = nil;
  75.     OSErr                        gotErr = noErr;
  76.             
  77.     if (DescriptorAvailable())
  78.     { /* recording.  Do our thing. */
  79.         token = OpenWriter();
  80.         if (token)
  81.         {
  82.             PIPutEnum(token,
  83.                       keyShape, 
  84.                       typeShape, 
  85.                       EnumToKey(gWhatShape, typeShape));
  86.             PIPutEnum(token,
  87.                       keyCreate,
  88.                       typeCreate, 
  89.                       EnumToKey(gCreate, typeCreate));
  90.             gotErr = CloseWriter(&token); /* closes and sets dialog optional */
  91.             /* done.  Now pass handle on to Photoshop */
  92.         }
  93.     }
  94.     return gotErr;
  95. }
  96.  
  97. /*****************************************************************************/
  98. /* Takes the property units and returns a corresponding enumerated number */
  99.  
  100. short KeyToEnum (OSType key, OSType whatType)
  101.  
  102. {
  103.     switch (whatType)
  104.     {
  105.         case typeShape:
  106.             switch (key)
  107.             {
  108.                 case shapeTriangle:
  109.                     return iShapeTriangle;
  110.                     break;
  111.                 case shapeSquare:
  112.                     return iShapeSquare;
  113.                     break;
  114.                 case shapeCircle:
  115.                     return iShapeCircle;
  116.                     break;
  117.                 case shapeStar:
  118.                     return iShapeStar;
  119.                     break;
  120.                 case shapeTreble:
  121.                     return iShapeTreble;
  122.                     break;
  123.                 case shapeRibbon:
  124.                     return iShapeRibbon;
  125.                     break;
  126.                 case shapeNote:
  127.                     return iShapeNote;
  128.                     break;
  129.             }
  130.             break;
  131.         case typeCreate:
  132.             switch (key)
  133.             {
  134.                 case createSelection:
  135.                     return iCreateSelection;
  136.                     break;
  137.                 case createMaskpath:
  138.                     return iCreateMaskpath;
  139.                     break;
  140.                 case createLayer:
  141.                     return iCreateLayer;
  142.                     break;
  143.             }
  144.             break;
  145.         case typePISel:
  146.             switch (key)
  147.             {
  148.                 case createSelection:
  149.                     return piSelMakeMask;
  150.                     break;
  151.                 case createMaskpath:
  152.                     return piSelMakeWorkPath;
  153.                     break;
  154.                 case createLayer:
  155.                     return piSelMakeLayer;
  156.                     break;
  157.             }
  158.             break;
  159.     }
  160. }
  161.  
  162. /*****************************************************************************/
  163. /* Takes the property enumeration and returns the corresponding key */
  164.  
  165. OSType EnumToKey (short keyEnum, OSType whatType)
  166.  
  167. {
  168.     switch (whatType)
  169.     {
  170.         case typeShape:
  171.             switch (keyEnum)
  172.             {
  173.                 case iShapeTriangle:
  174.                     return shapeTriangle;
  175.                     break;
  176.                 case iShapeSquare:
  177.                     return shapeSquare;
  178.                     break;
  179.                 case iShapeCircle:
  180.                     return shapeCircle;
  181.                     break;
  182.                 case iShapeStar:
  183.                     return shapeStar;
  184.                     break;
  185.                 case iShapeTreble:
  186.                     return shapeTreble;
  187.                     break;
  188.                 case iShapeRibbon:
  189.                     return shapeRibbon;
  190.                     break;
  191.                 case iShapeNote:
  192.                     return shapeNote;
  193.                     break;
  194.             }
  195.             break;
  196.         case typeCreate:
  197.             switch (keyEnum)
  198.             {
  199.                 case iCreateSelection:
  200.                     return createSelection;
  201.                     break;
  202.                 case iCreateMaskpath:
  203.                     return createMaskpath;
  204.                     break;
  205.                 case iCreateLayer:
  206.                     return createLayer;
  207.                     break;
  208.             }
  209.             break;
  210.     }
  211. }